﻿#define _CRT_SECURE_NO_WARNINGS 1



//islower 是能够判断参数部分的 c 是否是小写字母的
//写⼀个代码，将字符串中的⼩写字⺟转⼤写，其他字符不变。

//#include<stdio.h>
//#include<ctype.h>
//int main()
//{
	/*int i = 0;;
	char str[] = "Wang Jun kai";
	char c = 0;
	while (str[i])
	{
		c = str[i];
		if (islower(c))
		{
			c -= 32;
		}
		putchar(c);
		i++;
	}*/
	/*int i = 0;;
	char str[] = "Wang Jun kai";
	while (str[i])
	{
		if (islower(str[i]))
		{
			str[i] -= 32;
		}
		putchar(str[i]);
		i++;
	}
	return 0;
}*/



//#include<stdio.h>
//#include<ctype.h>
//int main()
//{
//	int i = 0;
//	char str[] = "Next to meet you Karry Wang";
//	while (str[i])
//	{
//		if (islower(str[i]))
//		{
//			str[i] = toupper(str[i]);
//		}
//		putchar(str[i]);
//		i++;
//	}
//	int i = 0;
//	char str[] = "Next to meet you Karry Wang";
//	while (str[i])
//	{
//		if (isupper(str[i]))
//		{
//			str[i] = tolower(str[i]);
//		}
//		putchar(str[i]);
//		i++;
//	}
//	return 0;
//}




//strlen
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	const char* str1 = "abcde";
//	const char* str2 = "ef";
//	if (strlen(str2) - strlen(str1) > 0)
//		printf("str2 > str1\n");
//	else 
//		printf("str1 > str2\n");
//	return 0;
//}

//#include <stdio.h>
//#include <string.h>
//int main()
//{
//	const char* str1 = "abcdef";
//	const char* str2 = "bbb";
//	if (strlen(str2) - strlen(str1) > 0)
//	{
//		printf("str2>str1\n");
//	}
//	else
//	{
//		printf("str1>str2\n");
//	}
//	return 0;
//}




//strlen的模拟实现
//#include<stdio.h>
//int main()
//{
//	char str[] = "Karry Wang";
//	int i = 0;
//	int count = 0;
//	while (str[i])
//	{
//		count++;
//		i++;
//	}
//	printf("%d\n", count);
//	return 0;
//}


//#include<stdio.h>
//#include<assert.h>
//int my_strlen(const char* str)
//{
//	int count = 0;
//	assert(str);
//	while (*str)
//	{
//		count++;
//		str++;
//	}
//	return count;
//}
//int main()
//{
//	char str[] = "KarryWang";
//	int ret = my_strlen(str);
//	printf("%d\n", ret);
//	return 0;
//}



//#include<stdio.h>
//#include<assert.h>
//int my_strlen(const char* str)
//{
//	assert(str);
//	if (*str == '\0')
//		return 0;
//	else
//		return 1 + my_strlen(str + 1);
//}
//int main()
//{
//	char str[] = "KarryWang";
//	int ret = my_strlen(str);
//	printf("%d\n", ret);
//	return 0;
//}


//指针-指针
//#include<stdio.h>
//#include<assert.h>
//int my_strlen(const char* str)
//{
//	assert(str);
//	char* p = str;
//	while (*p != '\0')
//		p++;
//	return p - str;
//}
//int main()
//{
//	char str[] = "KarryWang";
//	int ret = my_strlen(str);
//	printf("%d\n", ret);
//	return 0;
//}






//strcpy 的使用和模拟实现
//char* strcpy(char * destination, const char * source );

//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char str1[] = "Hello Karry";
//	char str2[30] = "Next to meet you";
//
//	strcpy(str2, str1);
//	printf("%s\n", str2);
//	return 0;
//}


//#include<stdio.h>
//#include<assert.h>
//char* my_strcpy(char* str2, const char* str1)
//{
//	char* ret = str2;
//	assert(str1 != NULL);
//	assert(str2 != NULL);
//	while ((*str2 = *str1))
//	{
//		str2++;
//		str1++;
//	}
//	return ret;
//}
//int main()
//{
//	char str1[] = "Next to meet you";
//	char str2[100] = { 0 };
//	my_strcpy(str2, str1);
//	printf("%s\n", str2);
//	return 0;
//}





// strcat 的使用和模拟实现
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char str1[100] = "hello ";
//	char str2[100] = "world";
//	strcat(str1, str2);
//	printf("%s\n", str1);
//	return 0;
//}



//#include<stdio.h>
//#include<assert.h>
//char* my_strcat(char* str1, const char* str2)
//{
//	char* ret = str1;
//	assert(str1 && str2);
//	while (*str1!=0)
//	{
//		str1++;
//	}
//	while ((*str1++ = *str2++))
//	{
//		/*str1++;
//		str2++;*/
//	}
//	return ret;
//}
//int main()
//{
//	char str1[100] = "hello ";
//	char str2[] = "world!";
//	my_strcat(str1, str2);
//	printf("%s\n", str1);
//	return 0;
//}





//strcmp 的使用和模拟实现
//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
//int main()
//{
//	char str1[] = "abcd";
//	char str2[] = "abcdefg";
//	int ret = strcmp(str1, str2);
//	printf("%d\n", ret);
//	return 0;
//}




//#include<stdio.h>
//#include<assert.h>
//int my_strcmp(const char* str1, const char* str2)
//{
//	assert(str1 && str2);
//	while (*str1 == *str2)
//	{
//		if (*str1 == '\0')
//			return 0;
//		str1++;
//		str2++;
//	}
//	return *str1 - *str2;
//}
//
//int main()
//{
//	char arr1[] = "abcd";
//	char arr2[] = "abcq";
//	int ret = my_strcmp(arr1, arr2);
//	//printf("%d\n", ret);
//	if (ret > 0)
//		printf(">\n");
//	else if(ret < 0)
//		printf("<\n");
//	else
//		printf("=\n");
//
//	return 0;
//}



//strncpy 函数的使用
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char arr1[] = "ab";
//	char arr2[20] = "xxxxxxxxxxx";
//	strcpy(arr2, arr1);
//	//strncpy(arr2, arr1, 5);
//	printf("%s\n", arr2);
//	return 0;
//}


#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[20] = "abcdef\0yyyyyyy";
	char arr2[] = "xxxxxxxxx";
	//strncat(arr1, arr2, 5);
	strncat(arr1, arr2, 3);
	printf("%s\n", arr1);
	return 0;
}



//int main()
//{
//	char arr1[] = "abcdef";
//	char arr2[] = "abbbcdef";
//	int ret = strncmp(arr1, arr2, 3);
//	printf("%d\n", ret);
//
//	return 0;
//}